package com.taotao.wifepojie.test;

import org.springframework.util.CollectionUtils;

import java.util.LinkedList;
import java.util.List;

public class CalculateTheSquare {

    /**
     * 用数组计算2^10000
     * @param args 计算平方
     *
     */
    public static void main(String[] args) {
        //数组存储每一位的数字
        List<Integer> num= new LinkedList<>();
        for(int i=1;i<=10000;i++){
            if(CollectionUtils.isEmpty(num)){
                num.add(2);//设置初始值
            }else {
                int inc=0;//进位数，初始为0
                for(int j=0;j<num.size();j++){
                    int multi= num.get(j)*2;//对应位数上乘以2
                    int forward=(multi+inc)/10;//获取下次进位数
                    int data=(multi+inc)%10;//进位数和结果相加，获取个位数
                    num.set(j,data);//替换原来对应位置上的数字
                    inc=forward;
                }
                //如果进位数大于零，那么进位数需要加入链表，进行下次计算
                if(inc>0){
                    num.add(inc);
                }
            }
        }

        /**
         * 打印结果
         */
        for(int k=num.size()-1;k>=0;k--){
            System.out.print(num.get(k));
            if(k==0){
                System.out.println("\n");
            }
        }
    }

}